| Предыдущая | Следующая | Оглавление | |
Flash Player 6.
dynamic classclassName[ extendssuperClass][ implementsinterfaceName[,interfaceName... ] ] { // здесь располагается определение класса }
Замечание: Для использования этого ключевого слова вы должны указать ActionScript 2.0 и Flash Player 6 или более новые во вкладке Flash диалогового окна Publish Settings вашего FLA-файла. Это ключевое слово поддерживается только в случае использования во внешних скриптовых файлах, а не в скриптах, написанных в панели Actions.
Ключевое слово; указывает, что к объектам, основанным на указанном классе, можно добавлять динамические свойства и иметь к ним доступ во время работы программы.
Контроль типов для динамических классов менее строг, чем для нединамических, потому что доступ к членам класса происходит внутри определения класса и на экземплярах класса не производится сравнения с определением в области действия класса. Функции - члены класса, однако, могут все-таки быть проверены контролем типов на тип возвращаемого значения и типы параметров. Это поведение особенно полезно, когда вы работаете с объектами MovieClip, потому что имеется много различных путей динамического добавления к мувиклипу свойств и объектов, таких как MovieClip.createEmptyMovieClip() и MovieClip.createTextField().
Подклассы динамических классов также являются динамическими.
Для дополнительной информации смотрите "Создание динамических классов" в Использовании ActionScript во Flash.
В следующем примере класс Person2 еще не помечен как динамический и поэтому вызов необъявленной в нем функции вызывает ошибку на стадии компиляции:
class Person2 {
var name:String;
var age:Number;
function Person2(param_name:String, param_age:Number) {
trace ("anything");
this.name = param_name;
this.age = param_age;
}
}
Во FLA или AS файле, который находится в той же папке, добавим следующий скрипт в кадре 1:
// До добавления dynamic
var craig:Person2 = new Person2("Craiggers", 32);
for (i in craig) {
trace("craig."+i +" = "+ craig[i]);
}
/* в окне output:
craig.age = 32
craig.name = Craiggers
*/
Если вы добавите необъявленную функцию dance, то это вызовет ошибку, как показано далее в примере:
trace("");
craig.dance = true;
for (i in craig) {
trace("craig."+i +" = "+ craig[i]);
}
/* в окне output:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 14: There is no property with the name 'dance'.
craig.dance = true;
Total ActionScript Errors: 1 Reported Errors: 1
*/
Добавим ключевое слово dynamic в классе Person2, тогда первая строка будет выглядеть так:
dynamic class Person2 {
Запустив код снова, вы увидите в окне output следующее:
craig.dance = true craig.age = 32 craig.name = Craiggers
class,extends
| Посмотреть комментарии LiveDocs | Предыдущая | Следующая | Оглавление | |